package javase2.day06.demo07;

/*
线程安全问题：
    卖票问题:会产生多个线程卖同一张票的bug:
            Thread-0正在卖第100张票
            Thread-2正在卖第100张票
            Thread-2正在卖第-1张票        这里还出现了不存在的票
     解决卖票的多线程问题方案一：同步代码块
        格式：
            synchronized(锁对象){
                可能会出现多线程问题的代码（访问共享数据的代码）
            }
        注意：
            1.锁对象可以是任意对象
            2.但必须保证多线程的锁是同一对象
            3.锁对象作用：
                将可能会出现多线程问题的代码锁住
                只能让一个线程在同步代码块中执行
 */
public class Demo01Ticket {
    public static void main(String[] args) {
        RunnableImpl runnable = new RunnableImpl();
        Thread thread1 = new Thread(runnable);
        Thread thread2 = new Thread(runnable);
        Thread thread3 = new Thread(runnable);
        thread1.start();
        thread2.start();
        thread3.start();
        /*
Thread-0正在卖第100张票
Thread-0正在卖第99张票
Thread-0正在卖第98张票
Thread-0正在卖第97张票
Thread-0正在卖第96张票
Thread-0正在卖第95张票
Thread-0正在卖第94张票
......
Thread-2正在卖第5张票
Thread-2正在卖第4张票
Thread-2正在卖第3张票
Thread-2正在卖第2张票
Thread-2正在卖第1张票
         */
    }
}
